﻿// LinkList.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include "LinkList1.h"//不带头结点单链表
#include "LinkList2.h"//带头结点单链表
#include "DLinkList1.h"//带头结点双链表
#include "DLinkList2.h"//不带头结点双链表
#include "CSLinkList2.h"//带头结点尾指针循环单链表


using namespace std;
void L1_test()
{
	LinkList1 L1;
	//L1.List_Tailnsert();
	L1.List_HeadInsert();
	L1.traverse();

	L1.ListInsert(1, 99);
	L1.ListInsert(2, 77);


	L1.ListInsert(1, 66);
	L1.ListInsert(4, 44);

	int data = 0;
	L1.ListDelete(2, data);
	L1.traverse();
	cout << endl;
	cout << "删除的data:" << data << endl;

	cout << "GetElem:" << L1.GetElem(2)->data << endl;

	cout << "LocateElem:" << L1.LocateElem(77)->data << endl;

	cout << "Length:" << L1.Length() << endl;
}
void L2_test()
{
	LinkList2 L2;
	//L2.List_Tailnsert();
	L2.List_HeadInsert();
	L2.traverse();

	L2.ListInsert(1, 13);
	L2.ListInsert(1, 23);
	L2.ListInsert(3, 33);
	int delete_data;
	//L2.ListDelete(2, delete_data);
	L2.traverse();
	cout << "L2.GetElem(2)->data" << L2.GetElem(2)->data << endl;
	cout << "L2.LocateElem(23)->data:" << L2.LocateElem(23)->data << endl;
	cout << "L2.Length:" << L2.Length() << endl;
}
void D1_test()
{
	DLinkList D1;
	D1.ListInsert(1, 1);
	D1.ListInsert(2, 2);
	D1.traverse();
	D1.Forward_Traversal();
	D1.DestoryList();
	//D1.traverse();
}
void D2_test()
{
	DLinkList2 D2;
	D2.ListInsert(1, 1);
	D2.ListInsert(2, 2);
	D2.traverse();
	int data;
	//D2.Forward_Traversal();
	D2.ListDelete(2,data);
	D2.traverse();
	/*D2.DestoryList();//销毁
	D2.traverse();*/
}
void CS2_test()
{
	CSLinkList2 D2;
	D2.ListInsert(1, 1);
	D2.ListInsert(2, 2);
	D2.ListInsert(2, 4);
	D2.ListInsert(2, 9);
	D2.ListInsert(3, 8);
	int data;
	D2.ListDelete(2, data);

	D2.traverse();
	cout<<D2.GetElem(4)->data;
	cout << "定位结果:" << D2.LocateElem(8)->data << endl;;

}
int main()
{
	CS2_test();
}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件，或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来，若要再次打开此项目，请转到“文件”>“打开”>“项目”并选择 .sln 文件
